[Ruby on Rails]Treasure Dataにレコードを登録する
はじめに
今回はタイトル通り、Treasure Dataにレコードを登録する方法についてです。前回とは異なり、一件ずつデータを登録します。ログのように一件ずつ発生するが大量になるようなデータを、Treasure Dataに登録する場合などに使う事になるかと思います。
事前準備
Treasure Data command line toolと、td-agentをインストールします。
1.td-agent
下記のサイトを参考に、td-agentをインストールします。(MacOS Xの場合です)
Installing Fluentd using .dmg Installer (MacOS X)
インストール後、以下のコマンドを実行するのを忘れないでください(私はこれを忘れて、しばらく立ち往生しました・・・)。
$ sudo launchctl load /Library/LaunchDaemons/td-agent.plist $ less /var/log/td-agent/td-agent.log
2.APIキーの登録
以前の記事で書いた方法で、キーの取得します。「/etc/td-agent/td-agent.conf」を開き、取得したキーを含め、以下のように記述します。この時、「match td.*.*」タグはユニークになるよう余計な定義はコメントアウトしたほうが良さそうです。
$ sudo vi /etc/td-agent/td-agent.conf
/etc/td-agent/td-agent.conf
<match td.*.*> type tdlog apikey 取得したAPIキー auto_create_table buffer_type file buffer_path /var/log/td-agent/buffer/td use_ssl true flush_interval 30s </match> <source> type forward port 24224 </source>
3.Treasure Data command line tool
Treasure Data command line toolはgemとして公開されているので、以下のコマンドでインストールします。
$ gem install td
サンプルソース
では、Railsでのサンプルソースです。予めTreasure Data上にデータベース、テーブルが作成されていることが前提となります。
1.Gemfile
以下をGemfileに記述し、bundle install します。
gem 'td'
2.treasure_data.yml
/config/treasure_data.ymlを作成し、以下のように定義します。今回はデータベース名を「sample_db」としました。
/config/treasure_data.yml
production: agent: "localhost:24224" tag: td.sample_db debug_mode: false development: agent: "localhost:24224" tag: td.sample_db debug_mode: false test: agent: "localhost:24224" tag: td.sample_db debug_mode: false
3.レコードの登録
最後にレコード登録についてです。今回は「persons」テーブルにデータを登録しました。
class Person def self.create(name, age) value = {'name' => name, 'age' => age, 'time' => Time.now} TD.event.post('persons', value) end end
TD.event.post()メソッドを呼び出し、登録対象のテーブル名、登録するデータのjsonを引数として渡します。Treasure Dataのテーブルにはデフォルトでtime列があるため、忘れずに登録値を設定するようにします。
まとめ
Treasure Dataにログ等を格納する際の参考になれば幸いです。